/*
 * 利用泰勒级数计算sinx的值（4分）
 */

#include <stdio.h>
#include <math.h>

int main() {
	setbuf(stdout, NULL);

	double x, sin_x = 0;
	// temp代表泰勒级数的每一项
	double temp;
	// 统计泰勒级数的项数。同时，也用于控制泰勒级数每一项的符号
	int count = 1;

	printf("Input x:\n");
	scanf("%lf", &x);

	temp = x;
	while (fabs(temp) >= 1e-5) {
		// sin_x累加泰勒级数的一项
		sin_x += temp;

		// 计数器count自增1
		++count;

		// TODO: 计算泰勒级数的下一项
		// STEP: temp重新初始化，并考虑正负
		if (count % 2 == 0) {
			temp = -1;
		} else {
			temp = 1;
		}
		// STEP: 计算下一项的分子
		for (int i = 0; i < 2 * count - 1; ++i) {
			temp *= x;
		}
		// STEP: 计算下一项的分母
		for (int i = 2; i <= 2 * count - 1; ++i) {
			temp /= i;
		}
	}

	printf("sin(x)=%.3f,count=%d\n", sin_x, count);

	return 0;
}